package com.example.JavaWeb1;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
     什么是ServletContext对象？
     1.ServletContext是一个接口,它表示Servlet上下文对象
     2.一个web工程，只有一个ServletContext对象实例
     3.ServletContext是一个域对象
     4.ServletContexts是在web工程部署启动的时候创建
     在web工程停止的时候销毁
     什么是域对象？
     域对象是可以像Map一样存取数据的对象
                           存数据      取数据      删除数据
         map               put        get            remote
        域对象       setAttribute   getAttribute      remoteAttribute
        ServletContext对象的四大作用：
            1.获取web.xml中配置的上下文参数 context-param
            2.获取当前工程的路径,格式/工程路径
            3.获取工程部署后在服务器硬盘上的绝对路径
            4.像Map一样存取数据 键值对
 */
public class ServletContextTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取web.xml中配置的上下文参数 context-param  getInitParameter(String s)
        ServletContext context = getServletConfig().getServletContext();
        System.out.println(context.getInitParameter("user1"));
        System.out.println(context.getInitParameter("user2"));
        //2.获取当前工程的路径,格式/工程路径getContextPath()
        System.out.println(context.getContextPath());
        //   3.获取工程部署后在服务器硬盘上的绝对路径 getRealPath("/")
        //   / 斜杠被服务器解释地址为：http://ip:port/工程名/
        System.out.println(context.getRealPath("/"));
        //4.像Map一样存取数据 键值对
        //获取 ServletContext的实例 可以用上面的方法 也可以直接getServletContext()原理一样
        ServletContext context1 = getServletContext();
        //此时存进的数据是一个工程共享的，因为一个工程只有一个ServletContext实例
        //当在web工程停止的时候销毁ServletContext实例,之前存的数据就会被销毁
        //如果你销毁后不存进去数据,你怎么样都查不到，除非你往里面存
        context1.setAttribute("key","1");
        context1.setAttribute("key1","2");
        System.out.println(context1.getAttribute("key"));
        System.out.println(context1.getAttribute("key1"));

    }
}
